/**
 * Created by PKD on 2017/6/24.
 */

var DBFactory = require('../db/mysql_db');
var configDao = module.exports;
var async = require('async');

configDao.getConfig = function (data, cb) {
    if (!data) {
        cb(new Error(500));
        return;
    }
    var sql = 'select * from config ';
    var value = [];
    if (data.appSid) {
        sql += ' WHERE app_sid = ? ';
        value.push(data.appSid);
    }
    if (data.key) {
        sql += value.length > 0 ? ' AND `key` = ? ' : ' WHERE `key` = ? ';
        value.push(data.key);
    }
    if (data.userId) {
        sql += value.length > 0 ? ' AND uid = ? ' : 'WHERE uid = ? ';
        value.push(data.userId);
    }
    if (data.isSub){
        sql += value.length > 0 ? ' AND (sub_uid = 0 or sub_uid = ?) ' : 'WHERE (sub_uid = 0 or sub_uid = ?) ';
        value.push(data.sub_uid);
    }
    DBFactory.poolQuery(sql, value,
        function () {
            cb('no connection');
        },
        function (err, result) {
            if (err) {
                cb(err);
                console.log(err);
                return;
            }
            cb(null, result);
        }
    );
}

configDao.getConfigs = function(data, cb) {
    var sql = 'select * from config';
    // if(appSid){
    //     sql += ' where `app_sid` = ?';
    //     var value = [appSid];
    // }
    // if (userId) {
    //     sql += ' AND uid = ? ';
    //     value.push(userId);
    // }
    DBFactory.poolQuery(sql,[],
        function () {
            cb('no connection');
        },
        function (err, result) {
            if (err) {
                cb(err);
                console.log(err);
                return;
            }
            cb(null, result);
        }
    );
}


configDao.setConfig = function (data, cb) {
    if (!data) {
        cb(new Error(500));
        return;
    }
    DBFactory.poolQuery('replace into config set ?;',
        [data],
        function () {
            cb('no connection');
        },
        function (err, result) {
            if (err) {
                cb(err);
                console.log(err);
                return;
            }
            if (result.affectedRows > 0) {
                cb(null, data);
            } else {
                cb('设置失败');
            }
        }
    );
}

configDao.updateCValue = function(data, cb) {
    if(!data) return cb(new ERR(500));
    DBFactory.getConnection(function(error, connection) {
        if(error) return cb(error);
        var sql = 'update config set `value` = ? where `key` = ? ';
        connection.query(sql, [data.value, data.key], function(err) {
            if(err) {
                connection.release();
                console.log(err);
                cb('修改失败，请重试！');
            } else {
                connection.release();
                cb(null, '修改成功！');
            }
        })
    });
}

//获取用户中心所有(或特定)app的sid和secret
// --- 放弃
// --- 原因：（1）初始化，还要重启服务器（2）这样所有产品都透明化了
// configDao.getAppKS = function (data, cb) {
//     if (!data) {
//         cb(new Error(500));
//         return;
//     }
//     DBFactory.getConnection(function (error, connection) {
//         if (error) {
//             cb(error);
//             return;
//         }
//         async.waterfall([
//             function (callback) {
//                 //检查sign是否正确
//                 connection.query('select sid,secret from apps where sid = ?', [data.app_sid],
//                     function (err, result) {
//                         if (err) {
//                             callback(err, null);
//                             return;
//                         }
//                         var sign;
//                         if (result && result[0] && result[0].secret) {
//                             console.log(data);
//                             sign = getSign(data.app_sid, result[0].secret, data.t);
//                             if (sign == data.sign) {
//                                 callback(null, true);
//                                 return;
//                             }
//                         }
//                         callback('参数不合法或没有该产品');
//                     });
//             },
//             function (isOK, callback) {
//                 //获取用户中心所有app的sid和secret
//                 connection.query('select sid,secret from apps', [],
//                     function (err, result) {
//                         if (err) {
//                             callback(err, null);
//                             return;
//                         }
//                         callback(null,result);
//                     });
//             },
//         ], function (err, res) {
//             connection.release();
//             if (err) {
//                 cb(err);
//             } else {
//                 cb(null, res);
//             }
//         });
//     });
// }